﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace BelDecor.Net.Pages
{
    public partial class ContasReceber : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ValidaSeguranca("ContaReceber");

            }
        }



        void PopulaContasReceber(bool rebind = false)
        {
            grdContas.DataSource = Domain.Model.VwContaReceber.All().Where(c =>
                                                                   (txtDataInicial.SelectedDate.HasValue ? c.dataVencimento >= txtDataInicial.SelectedDate : true)
                                                                   && (txtDataFinal.SelectedDate.HasValue ? c.dataVencimento <= txtDataFinal.SelectedDate : true)
                                                                   && (txtNumeroConta.Value.HasValue ? c.CodigoPedido == txtNumeroConta.Text : true)
                                                                   && (ckbConsultaPagamentoEfetuado.Checked ? c.PgEfetuado == "Sim" : true)
                                                                   ).ToList();

            if (!rebind) grdContas.DataBind();

            pnlGridBusca.Visible = true;


        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            PopulaContasReceber();
        }


        protected void grdContas_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
        {
            if (e.CommandName == "Editar")
            {
                int idContaReceber = int.Parse(e.CommandArgument.ToString());

                var Conta = Domain.Model.VwContaReceber.SingleOrDefault(a => a.Id_Conta == idContaReceber);
                getContaPagar(Conta);
                pnlEditar.Visible = true;
            }

            if (e.CommandName == Telerik.Web.UI.RadGrid.ExportToExcelCommandName ||
            e.CommandName == Telerik.Web.UI.RadGrid.ExportToWordCommandName ||
            e.CommandName == Telerik.Web.UI.RadGrid.ExportToCsvCommandName)
            {
                ConfigureExportgrd();
            }
        }

        public void ConfigureExportgrd()
        {
            grdContas.ExportSettings.ExportOnlyData = true;
            grdContas.ExportSettings.IgnorePaging = true;
            grdContas.ExportSettings.OpenInNewWindow = true;
            grdContas.ExportSettings.FileName = string.Format("ContasAreceber_{0}", DateTime.Now.Ticks);
        }



        private void getContaPagar(Domain.Model.VwContaReceber Conta)
        {

            if (Conta != null)
            {
                txtCodPedido.Text = Conta.CodigoPedido;
                txtFavorecido.Text = Conta.nome;
                txtDataVencimento.SelectedDate = Conta.dataVencimento;

                if (!string.IsNullOrEmpty(Conta.Forma_Recebimento))
                {
                    ddlFormaRecebimento.SelectedValue = Conta.Forma_Recebimento;
                }

                if (Conta.Valor_Recebimento != null)
                    txtValorRecebimento.Value = (double)Conta.Valor_Recebimento;

                txtValor.Value = (Conta.ValorTotal.HasValue ? (double)Conta.ValorTotal : 0);

                ckbPagamentoEfetuado.Checked = (Conta.PagamentoEfetuado.HasValue ? (bool)Conta.PagamentoEfetuado : false);


                btnSalvar.CommandArgument = Conta.Id_Conta.ToString();
            }

        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            Domain.Model.ContaReceber ctReceber = null;

            int idConta = 0;

            if (btnSalvar.CommandArgument != "")
            {
                idConta = int.Parse(btnSalvar.CommandArgument);
            }

            ctReceber = Domain.Model.ContaReceber.SingleOrDefault(c => c.Id_Conta == idConta);

            setContaReceber(ref ctReceber);

            ctReceber.Save();

            if (ckbPagamentoEfetuado.Checked)
            {
                //altera pagamento efetuado do pedido
                var pedido = Domain.Model.Pedido.SingleOrDefault(u => u.Id_Pedido == ctReceber.Id_Pedido);

                pedido.PagamentoEfetuado = true;
                pedido.Save();
            }

            LimparTela();
            PopulaContasReceber();

            if (!ckbPagamentoEfetuado.Checked)
            {
                RadWindowManager1.RadAlert("Operação efetuada com sucesso.", 0, 0, "Sucesso", "");
            }
            else
            {
                RadWindowManager1.RadAlert("Recebimento do pedido cadastrado com sucesso.", 0, 0, "Sucesso", "");
            }
        }


        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            LimparTela();
            pnlEditar.Visible = false;
        }

        void setContaReceber(ref Domain.Model.ContaReceber conta)
        {
            if (conta == null) conta = new Domain.Model.ContaReceber();

            if (ddlFormaRecebimento.SelectedValue != "0")
            {
                conta.Forma_Recebimento = ddlFormaRecebimento.SelectedValue;
                conta.Valor_Recebimento = (decimal)txtValorRecebimento.Value;
            }
        }

        void LimparTela()
        {
            txtCodPedido.Text = string.Empty;
            txtFavorecido.Text = string.Empty;
            txtDataVencimento.SelectedDate = null;

            ddlFormaRecebimento.SelectedIndex = 0;
            txtValor.Value = 0;
            txtValorRecebimento.Value = 0;
            ckbPagamentoEfetuado.Checked = false;

            btnSalvar.CommandArgument = "";
            pnlEditar.Visible = false;
        }


    }
}